package cl.foursoft.sirvicod.service;

import java.sql.Connection;

import cl.foursoft.sirvicod.dao.facade.FacadePersona;
import cl.foursoft.sirvicod.dao.facade.FacadeUsuario;
import cl.foursoft.sirvicod.dao.implementacion.DBMannager;
import cl.foursoft.sirvicod.dao.transferObject.PersonaTO;
import cl.foursoft.sirvicod.dao.transferObject.UsuarioTO;
import cl.foursoft.sirvicod.util.UtilLog;

public class UsuarioService {
	
	public int guardarUsuario(UsuarioTO usuario){
		
		Connection c = DBMannager.getConnection();
		
		FacadeUsuario facadeUsuario = new FacadeUsuario();
		FacadePersona facadePersona = new FacadePersona();
		
		int resp = 0;
		
		try {
			
			if(!facadePersona.existePersona(usuario.getRut(), c))
			{
				PersonaTO persona = new PersonaTO();
				
				persona.setRut(usuario.getRut());
				persona.setNombre(usuario.nombreCompleto());
				resp = facadePersona.guardarPersona(persona, c);					
			}
			if(resp >= 0)
				resp = facadeUsuario.guardarUsuario(usuario, c);
			
			boolean exito = (resp > 0);
			
			DBMannager.close(c, exito);
			
			return resp;
		}
		catch (Exception ex) 
		{
			UtilLog.registrar(ex);
			DBMannager.closeOnError(c);
			return resp;
		}
	}

	public UsuarioTO obtenerUsuario(String idUsuario, String contrasena)
	{		
		Connection c = DBMannager.getConnection();
		
		FacadeUsuario facadeUsuario = new FacadeUsuario();
		
		UsuarioTO resp = null;
		
		try {
			
			resp = facadeUsuario.obtenerUsuario(idUsuario, contrasena, c);
			
			boolean exito = (resp != null);
			
			DBMannager.close(c, exito);
			
			return resp;
		}
		catch (Exception ex) 
		{
			UtilLog.registrar(ex);
			DBMannager.closeOnError(c);
			return resp;
		}
	}
}
